from CONSTANTESUNITES import *
import time
import math
import random
class Unite(object):
    def __init__(self,typeUnite,etoile): ##recoit en string le type d'unite et un tableau des coordonnees du batiments qui l'a cree
        offsetX = random.randint(1,10)
        offsetY = random.randint(1,10)
        offsetZ = random.randint(1,10)
        self.x = etoile.x + offsetX
        self.y = etoile.y + offsetY
        self.z = etoile.z + offsetZ
        self.deplacementX = 0
        self.deplacementY = 0
        self.deplacementZ = 0
        self.tempsTotal = 0
        self.nbTics = 0
        self.statut = "vivant"
        self.proprietaire=etoile.proprietaire
        self.vitesse=CONSTANTESUNITES.unites[typeUnite]['vitesse']
        self.hp=CONSTANTESUNITES.unites[typeUnite]['hp']
        self.hpPrePing=self.hp
        self.shields=CONSTANTESUNITES.unites[typeUnite]['shields']
        self.shieldsPrePing=self.shields
        self.attaque=CONSTANTESUNITES.unites[typeUnite]['attaque']
        self.range=CONSTANTESUNITES.unites[typeUnite]['range']
        self.nbTicsAttaque=0
        self.tempsTotalAttaque=0
        self.reductionVieParTic=0
        self.uniteVisee=0
        self.type=typeUnite
#              
    def initMouvement(self,x,y,z):
        self.nbTics = 0
        #calcul de la distance a parcourir et le temps necessaire pour TOUT le trajet
        distanceTotale=math.sqrt(math.pow(abs((self.x-x)),2)+math.pow(abs((self.y-y)),2)+math.pow(abs((self.z-z)),2))
        tempsTotal=(distanceTotale/self.vitesse)*10 ##en dixiemes de secondes
        
        self.tempsTotal=int(tempsTotal)
        ##calcule les ajustements de position par tic
        self.deplacementX = (x-self.x)/tempsTotal
        self.deplacementY = (y-self.y)/tempsTotal
        self.deplacementZ = (z-self.z)/tempsTotal
        ##sauve la destination
        self.destinationX=x
        self.destinationY=y
        self.destinationZ=z
        
    def bouger(self):
        ##ajuste la position
        self.x+=self.deplacementX
        self.y+=self.deplacementY
        self.z+=self.deplacementZ
        self.nbTics+=1
        if self.nbTics<=self.tempsTotal:
            ##indique que le deplacement n'est pas termine
            return "encore"
        else:
            ##indique que le deplacement est termine
            self.x=self.destinationX
            self.y=self.destinationY
            self.z=self.destinationZ
            return "fini"